From: Ray Strode Date: Tue, 12 Oct 2021 19:15:50 +0000 (-0400) Subject: st/password-entry: Fix crash when DConf changes after StEntry is destroyed X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~557^2^2~25 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=ddb6276a4934e6b67b62eb8146fb88a39625c577;p=gnome-shell.git st/password-entry: Fix crash when DConf changes after StEntry is destroyed commit 8721c5db37c1409dbb806c915e6c077e1c4b8c6b made StPasswordEntry honor the 'disable-show-password' setting. Unfortunately, it introduced a lifecycle bug where the signal handler for noticing setting changes can out live the entry itself. This commit fixes the problem by using g_signal_connect_object Part-of: --- diff --git a/src/st/st-password-entry.c b/src/st/st-password-entry.c index 3dd8c6c1c..847ba3a14 100644 --- a/src/st/st-password-entry.c +++ b/src/st/st-password-entry.c @@ -37,6 +37,7 @@ struct _StPasswordEntry struct _StPasswordEntryPrivate { ClutterActor *peek_password_icon; + gboolean password_visible; gboolean show_peek_icon; }; @@ -229,10 +230,11 @@ st_password_entry_init (StPasswordEntry *entry) st_password_entry_set_show_peek_icon (entry, TRUE); - g_signal_connect (st_settings_get (), - "notify::disable-show-password", - G_CALLBACK (on_disable_show_password_changed), - entry); + g_signal_connect_object (st_settings_get (), + "notify::disable-show-password", + G_CALLBACK (on_disable_show_password_changed), + entry, + 0); clutter_text = st_entry_get_clutter_text (ST_ENTRY (entry)); clutter_text_set_password_char (CLUTTER_TEXT (clutter_text), BLACK_CIRCLE);